home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / 7arte.ifs < prev    next >
Text File  |  2005-04-22  |  8KB  |  258 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=O Guardiπo (<link>bruno_mga@hotmail.com</link>)
  8. Title=7a Arte
  9. Description=Movie importation script for 7a Arte
  10. Site=www.7arte.net
  11. Language=PT
  12. Version=2.4 (22 Abril 2005)
  13. Requires=3.5.0
  14. Comments=Script feito por O Guardiπo (bruno_mga@hotmail.com) para o site "www.7arte.net" |
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19. Listar Urls Duplicadas=0|0|0=Sim|1=Nπo
  20.  
  21. ***************************************************)
  22.  
  23. program arte;
  24. const
  25.   BaseAddress = 'www.7arte.net/';
  26. var
  27.   MovieName: string;
  28.  
  29. function UpFirstLetterWord(texto:string):string; //Function Made By O Guardiπo
  30. var espaco:integer;
  31.  sst:string;
  32. begin
  33. texto:=AnsiUpFirstLetter(AnsiLowerCase(texto));
  34. repeat
  35.     espaco:=Pos(' ',texto);
  36.     sst:=AnsiUpperCase(Copy(texto,espaco+1,1));
  37.     texto:=Copy(texto,1,espaco-1)+'/|\'+sst+Copy(texto,espaco+2,length(texto));
  38. until Pos(' ',texto)=0;
  39. texto := StringReplace(texto, '/|\', ' ');
  40. if Copy(texto,1,1)=' ' then//se a 1║ pos Θ espaτo
  41.   texto:=Copy(texto,2,length(texto));
  42. result:=texto;
  43. end;
  44.  
  45. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  46. var
  47.   i: Integer;
  48. begin
  49.   result := -1;
  50.   if StartAt < 0 then
  51.     StartAt := 0;
  52.   for i := StartAt to List.Count-1 do
  53.     if Pos(Pattern, List.GetString(i)) <> 0 then
  54.     begin
  55.       result := i;
  56.       Break;
  57.     end;
  58. end;
  59. function HTMLRemove(Value: String): String;
  60. begin
  61.   HTMLDecode(Value);
  62.   HTMLRemoveTags(Value);
  63.   Value := Trim(Value);
  64.   result := Value;
  65. end;
  66. procedure AnalyzeFilmPage(Address: String);
  67. var
  68.   Page : TStringList;
  69.   Line, Value : string;
  70.   LineNr, BeginPos, EndPos: Integer;
  71.   AllTitles: TStringList;
  72. begin
  73.   Page := TStringList.Create;
  74.   Page.Text := GetPage('http://proxify.com/p/001110A0000110/http/'+Address);
  75.   SetField(fieldURL, Address);
  76.  
  77.  
  78.   //para continuar deve ser diferente destas mensagens
  79.   if (FindLine('Due to extremely high usage, Proxify is temporarily allowing access only to paid subscribers. We apologize for the inconvenience.', Page, 0)<>-1) and (FindLine('POR FAVOR TENTE MAIS TARDE.', Page, 0)<>-1) then
  80.     showmessage('Servidor encontra-se indisponivel.')
  81.   else
  82.   begin
  83.   //modo alternativo para obter o nome traduzido
  84.   LineNr := FindLine('Critique o Filme', Page, 0);
  85.   if LineNr<>-1 then
  86.   begin
  87.     Value := Page.GetString(LineNr);
  88.     value:=HTMLRemove(value);
  89.     value:=Copy(value,17,length(value));
  90.     SetField(fieldTranslatedTitle, Value);
  91.   end
  92.   else
  93.   begin
  94.     //nome traduzido do filme
  95.     LineNr := FindLine('<FONT FACE="Arial,Helvetica"><FONT SIZE=+1>', Page, 0);
  96.     Value := Page.GetString(LineNr);
  97.     value:=HTMLRemove(value);
  98.     Value:=UpFirstLetterWord(Value);
  99.     SetField(fieldTranslatedTitle, Value);
  100.   end;
  101.  
  102.   //nome original do filme
  103.   LineNr := FindLine('<FONT FACE="Arial,Helvetica"><FONT SIZE=+1>', Page, 0);
  104.   value:= Page.GetString(LineNr+1);
  105.   Value := HTMLRemove(Value);
  106.   SetField(fieldOriginalTitle, Value);
  107.  
  108.   //pontuaτπo
  109.   LineNr := FindLine('<FONT SIZE=-1 FACE="Arial,Helvetica"><B>', Page, 0);
  110.   Value := Page.GetString(LineNr);
  111.   value:=HTMLRemove(value);
  112.   if (pos('.',value)<>-1) then
  113.    BeginPos:=StrToInt(copy(value,3,1),0);
  114.    if BeginPos>4 then
  115.      value:=IntToStr(1+StrToInt(Copy(value,1,1),0))
  116.   else
  117.   value:=Copy(value,1,1);
  118.   SetField(fieldRating, Value);
  119.  
  120.   //realizador
  121.   LineNr := FindLine('>Realizador:</', Page, 0);
  122.   Value := HTMLRemove(Page.GetString(LineNr));
  123.   value:=Copy(value,13,length(value));
  124.   SetField(fieldDirector, Value);
  125.  
  126.   //actores
  127.   Line:='';
  128.   LineNr := FindLine('<B>Actores:</B><BR><FONT Size=-1>', Page, 0);
  129.   lineNr:=lineNr+1;
  130.   repeat
  131.   value:=Page.GetString(LineNr);
  132.   if line<>'' then line:=line+', ';  // virgula entre cada nome
  133.   Line:=line+Copy(HTMLRemove(value),3,length(value));
  134.   lineNr:=lineNr+1;
  135.   value:=Page.GetString(LineNr);
  136.   until pos('</FONT></TD>',value)<> 0;
  137.   SetField(fieldActors, Line);
  138.  
  139.   //ano
  140.   LineNr := FindLine('><B>Ano:</B>', Page, 0);
  141.   value:=Copy(HTMLRemove(Page.GetString(LineNr)),6,length(value));
  142.   SetField(fieldYear, value);
  143.  
  144.   //duraτπo
  145.   LineNr := FindLine('<B>Duraτπo:</B> <FONT SIze=-1>', Page, 0);
  146.   value:=HTMLRemove(Page.GetString(LineNr));
  147.   Value := StringReplace(Value, 'Duraτπo: ', '');
  148.   Value := StringReplace(Value, ' minutos', '');
  149.   SetField(fieldLength, value);
  150.  
  151.   //genero
  152.   LineNr := FindLine('<B>GΘnero:</B> <FONT SIze=-1>', Page, 0);
  153.   value:=HTMLRemove(Page.GetString(LineNr));
  154.   Value := StringReplace(Value, 'GΘnero: ', '');
  155.   SetField(fieldCategory, value);
  156.  
  157.   //paφs
  158.   LineNr := FindLine('<B>Paφs de Origem:</B> <FONT SIze=-1>', Page, 0);
  159.   value:=HTMLRemove(Page.GetString(LineNr));
  160.   Value := StringReplace(Value, 'Paφs de Origem: ', '');
  161.   SetField(fieldCountry, value);
  162.   
  163.   //descriτπo
  164.   LineNr := FindLine('<B>Sinopse:</B><BR>', Page, 0);
  165.   if LineNr<>-1 then
  166.   begin
  167.   value:='';
  168.   repeat
  169.   LineNr:=LineNr+1;
  170.   value:=value+Page.GetString(LineNr);
  171.   until Pos('</TD>', Page.GetString(LineNr)) <> 0; //ate encontrar o </Td>
  172.   value:=HTMLRemove(value);
  173.   Value := StringReplace(Value, ' [ www.7arte.net ]', '');
  174.   SetField(fieldDescription, value);
  175.   end;
  176.  
  177.   // Get Picture
  178.   LineNr := FindLine('/imagens/filmes/', Page, 0);
  179.   if LineNr > -1 then
  180.   begin
  181.     value := Page.GetString(LineNr);
  182.     BeginPos := pos('src="', value)+5;
  183.     EndPos := pos('.jpg', value);
  184.   if endpos=0 then
  185.     EndPos := pos('.gif', value);
  186.     Value :=copy(value, BeginPos,4+EndPos-BeginPos);
  187.     GetPicture(Value);
  188.   end;
  189. end;
  190. end;
  191.  
  192. procedure AnalyzePage(Address,Address2: string);
  193. var
  194.   Page: TStringList;
  195.   LineNr, StartPos, EndPos: Integer;
  196.   Line: string;
  197.   x,y:integer;
  198.   MovieAddress, findMovieName,linedown : string;
  199.   lista_urls: TStringList;
  200. begin
  201.   PickTreeClear;
  202.   Page := TStringList.Create;
  203.   Page.Text := GetPage(Address);
  204. lista_urls := TStringList.Create;
  205. for x:=1 to 2 do
  206. begin
  207.   if (pos('Resultados Encontrados', Page.Text)>0) then
  208.   begin
  209.     LineNr :=0;
  210.     repeat
  211.       LineNr := FindLine('/cgi-bin/filme.pl?codigo=', Page, LineNr);
  212.       If LineNr >0 Then Begin
  213.         Line := Page.GetString(LineNr);
  214.         StartPos := pos('cgi-bin/filme.pl?codigo=', Line);
  215.         EndPos := pos(')">',Line)-1;
  216.         MovieAddress :=  copy(Line, StartPos, EndPos - StartPos);
  217.         StartPos := EndPos + 15;
  218.         StartPos :=  EndPos+4;
  219.         endpos:=pos('</A><BR>',Line);
  220.         Line:=Copy(Line,startpos,endpos);
  221.         findmoviename:=HTMLRemove(Line);
  222.         HTMLRemoveTags(FindMovieName);
  223.         HTMLDecode(FindMovieName);
  224.         
  225.         if Pos(BaseAddress + MovieAddress,lista_urls.text)=0 then
  226.         begin
  227.           lista_urls.add( BaseAddress + MovieAddress)
  228.           PickTreeAdd(FindMovieName, BaseAddress + MovieAddress);
  229.         end
  230.         else
  231.           if GetOption('Listar Urls Duplicadas') = 0 then
  232.             PickTreeAdd(FindMovieName, BaseAddress + MovieAddress);
  233.         LineNr := LineNr + 1;
  234.       End;
  235.     until (LineNr<1);
  236.     end;
  237.         Page.Text := GetPage(Address2);
  238. end;
  239. if lista_urls.count=0 then
  240.       showmessage('Filme nπo encontrado')
  241. else
  242. if PickTreeExec(Address) then
  243.   AnalyzeFilmPage(Address)
  244.   Page.Free
  245.   lista_urls.Free;
  246. end;
  247.  
  248. begin
  249.   PickListClear;
  250.   MovieName := GetField(fieldOriginalTitle);
  251.   if Input('Importar do www.7arte.net', 'Escreva o nome do filme:', MovieName) then begin
  252.   //espaτo nπo sπo permitidos
  253.   MovieName := StringReplace(MovieName, ' ', '+');
  254.   AnalyzePage('http://proxify.com/p/001110A0000110/http/www.7arte.net/cgi-bin/arq_search_orig.pl?letra=&proc='+MovieName,'http://proxify.com/p/001110A0000110/http/www.7arte.net/cgi-bin/arq_search.pl?proc='+MovieName);
  255.   end;
  256. end.
  257.  
  258.